#ifndef VASH_LINEBUFFER_HEADER
	#define VASH_LINEBUFFER_HEADER
	#include <string>
	#include <vector>

	class LineBuffer
	{
		public:
			LineBuffer();
			void setPos(size_t pos = std::string::npos);
			void addPos(int pos);
			size_t getLineCount();
			size_t getCurrentLine();
			size_t setCurrentLine(size_t line);
			size_t editCurrentLine(int line);
			size_t getCurrentLineSize(int line = 0);
			size_t getPos();
			void erasePrevChar();
			void eraseNextChar();
			void erase();
			void setLine(std::string val);
			void addToLine(std::string add);
			void addToLine(char c);
			bool isModified();
			operator std::string();
			std::string str();
			std::string getStrClipped(size_t start_line,size_t end_line,size_t start_x,size_t end_x);
			~LineBuffer();
		private:
			bool modified;
			std::vector<std::string> alines;	//Lines above the editable line.
			std::string half[2];				//Editable line.
			std::vector<std::string> blines;	//Lines below the editable line.
	};
#endif